package javaweb.mapper;

import javaweb.pojo.Emp;
import javaweb.pojo.EmpQueryParam;
import org.apache.ibatis.annotations.*;

import java.time.LocalDate;
import java.util.List;
import java.util.Map;

/*
 * 员工信息的Mapper
 * */
@Mapper
public interface EmpMapper {

    //--------------------------------分页查询原始方式------------------------------------
    /*    *//*
     * 查询页面总数
     * *//*
    @Select("select count(*) from emp e left join dept d on e.dept_id = d.id;")
    public Long count();

    *//*
     * 分页查询 查询结果列表
     * *//*
    @Select("select e.*, d.name deptName from emp e left join dept d on e.dept_id = d.id limit #{start}, #{pageSize};")
    public List<Emp> list(Integer start,Integer pageSize);*/

    /*-------------------PageHelper方式----------------------*/

    /*
     * 分页查询 查询结果列表
     *
     * 注意：
        PageHelper实现分页查询时，SQL语句的结尾一定一定一定不要加分号(;).。
        PageHelper只会对紧跟在其后的第一条SQL语句进行分页处理。
     * */
    //@Select("select e.*, d.name deptName from emp e left join dept d on e.dept_id = d.id where e.name like concat('%' + #{name} + '%') and e.gender = #{gender} and e.entry_date between #{begin} and  #{end} order by e.update_time desc")
    public List<Emp> list(EmpQueryParam empQueryParam);

    /*
    * 添加员工的操作
    * */
    @Options(useGeneratedKeys = true, keyProperty = "id")//主键返回
    //@Insert("insert into emp (id, username, password, name, gender, phone, job, salary, image, entry_date, dept_id, create_time, update_time)" +
    //"VALUES (#{id}, #{username}, #{password}, #{name} ,#{gender} ,#{phone} ,#{job} ,#{salary} ,#{image} ,#{entryDate}, #{deptId} ,#{createTime}, #{updateTime})")
    public void insert(Emp emp);

    /*
    * 删除员工的基本信息
    * */
    public void delete(List<Integer> ids);

    /*
    *修改员工的基本信息
    * */
    public void updateEmp(Emp emp);

    /*
    * 获取员工职位报表统计
    * */
    @MapKey("pos")
    public List<Map<String, Object>> countEmpJobDta();

    /*
    * 获取员工性别报表
    * */
    @MapKey("name")
    public List<Map<String, Object>> countEmpGenderData();

    /*
    * 登陆功能
    * */
    @Select("select id, username, name from emp where username = #{username} and password = #{password}")
    public Emp selectByUsernameAndPassword(Emp emp);
}
